System and method for sharing unsupported document types between communication devices

ABSTRACT

An improved system and method are disclosed for sharing a document between two communication devices that do not have an application that can display the document. In one example, the document is sent by the communication device that is sharing the document to a document server for processing into pages of one or more different document types, and both communication devices retrieve the stored pages as needed for display. The sharing communication device updates the other communication device when a new page is to be retrieved from the document server.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/154,884, filed Oct. 9, 2018, entitled SYSTEM AND METHOD FOR SHARINGUNSUPPORTED DOCUMENT TYPES BETWEEN COMMUNICATION DEVICES, which U.S.patent application Ser. No. 16/154,884 is a continuation of U.S. patentapplication Ser. No. 15/680,702, filed on Aug. 18, 2017, entitled SYSTEMAND METHOD FOR SHARING UNSUPPORTED DOCUMENT TYPES BETWEEN COMMUNICATIONDEVICES, now U.S. Pat. No. 10,097,638, issued on Oct. 9, 2018, whichU.S. application Ser. No. 15/680,702 is a continuation of U.S. patentapplication Ser. No. 15/166,437, filed May 27, 2016, entitled SYSTEM ANDMETHOD FOR SHARING UNSUPPORTED DOCUMENT TYPES BETWEEN COMMUNICATIONDEVICES, now U.S. Pat. No. 9,742,846, issued on Aug. 22, 2017. U.S.patent application Ser. No. 15/166,437 is a continuation of U.S. patentapplication Ser. No. 14/478,498, filed Sep. 5, 2014, entitled SYSTEM ANDMETHOD FOR SHARING UNSUPPORTED DOCUMENT TYPES BETWEEN COMMUNICATIONDEVICES, now U.S. Pat. No. 9,356,997, issued on May 31, 2016, which is acontinuation of U.S. patent application Ser. No. 13/789,020, filed Mar.7, 2013, entitled SYSTEM AND METHOD FOR SHARING UNSUPPORTED DOCUMENTTYPES BETWEEN COMMUNICATION DEVICES, which is a continuation of U.S.patent application Ser. No. 13/079,665, filed Apr. 4, 2011, entitledSYSTEM AND METHOD FOR SHARING UNSUPPORTED DOCUMENT TYPES BETWEENCOMMUNICATION DEVICES, now U.S. Pat. No. 8,407,314, issued Mar. 26,2013, the contents of which are incorporated herein in their entirety.

INCORPORATION BY REFERENCE

The present application incorporates by reference in their entirety U.S.Pat. No. 7,656,870, filed on Mar. 15, 2005, and entitled SYSTEM ANDMETHOD FOR PEER-TO-PEER HYBRID COMMUNICATIONS; U.S. Pat. No. 7,570,636,filed on Aug. 30, 2005, and entitled SYSTEM AND METHOD FOR TRAVERSING ANAT DEVICE FOR PEER-TO-PEER HYBRID COMMUNICATIONS; U.S. patentapplication Ser. No. 12/705,925, filed on Feb. 15, 2010, and entitledSYSTEM AND METHOD FOR STRATEGIC ROUTING IN A PEER-TO-PEER ENVIRONMENT;and U.S. patent application Ser. No. 12/728,024, filed on Mar. 19, 2010,and entitled SYSTEM AND METHOD FOR PROVIDING A VIRTUAL PEER-TO-PEERENVIRONMENT.

BACKGROUND

Document sharing between devices typically relies on the ability of adevice to open a document using an application that is present on thedevice. However, the device may not have a suitable applicationinstalled or such an application may not be available for thatparticular device. Accordingly, improvements are needed in sharingdocuments to address such issues.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding, reference is now made to thefollowing description taken in conjunction with the accompanyingDrawings in which:

FIG. 1 is a simplified network diagram of one embodiment of anenvironment illustrating communication devices and a document server.

FIG. 2 is a sequence diagram illustrating one embodiment of a processthat may be executed within the environment of FIG. 1 for sharing adocument that cannot be opened by the communication devices.

FIG. 3 is a sequence diagram illustrating one embodiment of a processthat may be executed within the environment of FIG. 1 to move to anotherpage.

FIG. 4 is a sequence diagram illustrating one embodiment of a processthat may be executed within the environment of FIG. 1 to move to anotherpage.

FIG. 5 is a sequence diagram illustrating one embodiment of a processthat may be executed within the environment of FIG. 1 to share and saveedits to a page.

FIG. 6 is a sequence diagram illustrating one embodiment of a processthat may be executed within the environment of FIG. 1 for processing adocument to be shared by a communication device.

FIG. 7 is a sequence diagram illustrating one embodiment of a processthat may be executed within the environment of FIG. 1 to share a pagebetween communication devices.

FIG. 8 is a sequence diagram illustrating one embodiment of a processthat may be executed within the environment of FIG. 1 to move to anotherpage.

FIG. 9 is a flow chart illustrating one embodiment of a method that maybe executed by a communication device within the environment of FIG. 1to share a document with another communication device.

FIG. 10 is a flow chart illustrating one embodiment of a method that maybe executed by a communication device within the environment of FIG. 1to obtain pages representing a document being shared from anothercommunication device.

FIG. 11 is a flow chart illustrating one embodiment of a method that maybe executed by a communication device within the environment of FIG. 1to edit a page and share the edited page.

FIG. 12 is a flow chart illustrating one embodiment of a method that maybe executed by a communication device within the environment of FIG. 1to receive an edited page from another communication device.

FIG. 13 is a simplified network diagram of one embodiment of anenvironment illustrating devices and a document server.

FIG. 14 is a simplified network diagram of one embodiment of a hybridpeer-to-peer system within which the communication devices of FIG. 1 or13 may operate.

FIG. 15a illustrates one embodiment of an access server architecturethat may be used within the system of FIG. 14.

FIG. 15b illustrates one embodiment of an endpoint architecture that maybe used by a device within the system of FIG. 14.

FIG. 15c illustrates one embodiment of components within the endpointarchitecture of FIG. 15b that may be used for cellular networkconnectivity.

FIG. 16a is a sequence diagram illustrating the interaction of variouscomponents of FIG. 15b when placing a call.

FIG. 16b is a sequence diagram illustrating the interaction of variouscomponents of FIG. 15b when receiving a call.

FIG. 17 is a sequence diagram illustrating an exemplary process by whichan endpoint of FIG. 14 may be authenticated and communicate with anotherendpoint.

FIG. 18 is a simplified diagram of one embodiment of a computer systemthat may be used in embodiments of the present disclosure as acommunication device and/or an endpoint.

DETAILED DESCRIPTION

The present disclosure is directed to a system and method for documentsharing between communication devices. It is understood that thefollowing disclosure provides many different embodiments or examples.Specific examples of components and arrangements are described below tosimplify the present disclosure. These are, of course, merely examplesand are not intended to be limiting. In addition, the present disclosuremay repeat reference numerals and/or letters in the various examples.This repetition is for the purpose of simplicity and clarity and doesnot in itself dictate a relationship between the various embodimentsand/or configurations discussed.

Referring to FIG. 1, in one embodiment, an environment 100 isillustrated with two communication devices 102 and 104. Examples of suchcommunication devices include cellular telephones (including smartphones), personal digital assistants (PDAs), netbooks, tablets, laptops,desktops, workstations, and any other computing device that cancommunicate with another computing device using a wireless and/orwireline communication link. Such communications may be direct (e.g.,via a peer-to-peer network, an ad hoc network, or using a directconnection), indirect, such as through a server or other proxy (e.g., ina client-server model), or may use a combination of direct and indirectcommunications.

The communication device 102 includes multiple applications 106 a-106 c.The applications 106 a-106 c provide a user of the communication device102 with the ability to interact with the communication device 102 inorder to perform tasks in such areas as communication (e.g., voiceand/or video calls, email, and text messaging), scheduling, games,photography, Internet access, and document viewing and/or manipulation.Document viewing and/or manipulation may be performed on variousdocuments 108 a-108 c that are stored on or otherwise accessible to thecommunication device 102.

In the present example, a particular one of the applications 106 a-106 cmay be associated with one or more document types of the documents 108a-108 c. The term “document” as used herein includes any type of text,image, audio, and/or video file or combination of files, and may includefiles having multiple document types (e.g., an audio/video file or atext document with inline or linked images). A particular document 108a-108 c generally has a document type associated with that document inthe format of “document_name.document_type,” so the document 108 a maybe in the format of document_108a.xyz, where .xyz is one of manydifferent document types.

The characteristics of a particular document 108 a-108 c are dependenton various parameters of that document type. For example, a textdocument may have formatting parameters, such as font attributes (e.g.,bold, underline, and italics), paragraph attributes, and otherattributes. An audio document may have a bit rate, length, and otherattributes. A video document may have a resolution, frame rate, andother attributes. A document that combines multiple document types mayhave parameters that represent the document types and/or may link toanother document. Accordingly, each document 108 a-108 c may beassociated with corresponding information that enables the communicationdevice 102 to use one of the applications 106 a-106 c to display, play,view, or otherwise handle that document (all of which are representedherein for purposes of clarity by the term “display” regardless of thedocument type (e.g., playing an audio file is referred to herein asdisplaying the audio file)).

If a document 108 a-108 c is not associated with an application 106a-106 c of the communication device 102, the document is not accessibleto (e.g., cannot be opened by) the user of the communication device 102.For example, if the document 108 a has a document type of .xyz(document_108a.xyz) and none of the applications 106 a-106 c on thecommunication device 102 are capable of reading and displaying thedocument type .xyz, the document 108 a will not be available to the usereven though it is present on the communication device 102.

An application may not be available on the communication device 102 fora number of reasons. One reason is that the application may not besupported on the communication device 102 (e.g., the application may usea proprietary document type and not be available for licensing on aparticular operating system used by the communication device 102).Another reason is that the communication device 102 may have anoperating system that does not provide access to certain functionsneeded by the application for security or other reasons and so theapplication may not be able to perform properly on that device even ifavailable.

The communication device 104 includes applications 110 a-110 c thatprovide a user of the communication device 104 with the ability tointeract with the communication device 104 in order to perform tasks insuch areas as communication, scheduling, games, photography, Internetaccess, and document viewing and/or manipulation. Some or all of theapplications 106 a-106 c and 110 a-110 c may be similar or identical.For example, the communication device 102 may include an application 106a that is also present in the applications 110 a-110 c of thecommunication device 104. In other embodiments, the communicationdevices 102 and 104 may perform a similar or identical function with adifferent application. For example, the communication device 102 mayopen an image document having a particular document type (e.g., a GIFfile) with a particular application 106 b, and the communication device104 may open the same image document with another application 110 c. Thecommunication device 104 may also store or access a plurality ofdocuments 112 a-112 c, each of which may have a document type that isassociated with one or more of the applications 110 a-110 c as describedwith respect to the communication device 102.

In the present example, the user of the communication device 102 wantsto share the document 108 a with the user of the communication device104. However, neither of the communication devices 102 and 104 is ableto open the document. More specifically, the communication device 102does not have an application 106 a-106 c capable of opening the document108 a of document type .xyz, and the communication device 104 does nothave an application 110 a-110 c capable of opening the document 108 a.For purposes of example, the term “open” means able to read andcorrectly display the document 108 a on a display of the communicationdevice, where a display is whatever input/output device is used for thedocument type (e.g., a display may be visual display such as a screenand/or an audio display such as speakers or a headset).

It is understood that the communication device 102 may send the document108 a to the communication device 104 even though one or both of thecommunication devices 102 and 104 cannot open the document 108 a, butthe sharing of the present example is a collaborative sharing where bothusers want to open the document 108 a. For example, the users of thecommunication devices 102 and 104 may want to view the document 108 awhile discussing it and/or may want to edit the document. Sharing of thecommunication device 102 or 104 itself (e.g., giving control of thecommunication device to the other communication device) may not bepossible and, even if possible, may not be desirable due to securityconcerns. For example, it may be undesirable to allow the communicationdevice 104 to access the file system of the communication device 102just to share a document, as any document on the communication device102 may then be viewed by the communication device 104.

The environment 100 further includes a document server 114 that iscoupled to the communication devices 102 and 104 via a network 120. Thedocument server 114 includes applications 116 a-116 c that provide thedocument server 114 with functionality for managing connections(including communicating with the communication devices 102 and 104) andprocessing documents (as will be described below). In some embodiments,the document server 114 may also include one or more applications forstoring documents and/or pages 118 a-118 c, either on the documentserver 114 or in another network accessible storage location (notshown). The documents/pages 118 a-118 c may be active (currently in use)or archived (stored and not currently in use).

The network 120 may be a single network or may represent multiplenetworks, including networks of different types. For example, thecommunication device 102 may be coupled to the document server 114 via anetwork that includes a cellular link coupled to a data packet network,and the communication device 104 may be coupled to the document server114 via a data packet link such as a wide local area network (WLAN)coupled to a data packet network. Accordingly, many different networktypes and configurations may be used to couple the communication devices102 and 104 to one another and to the document server 114.

Exemplary network, system, and connection types include the internet,WiMax, local area networks (LANs) (e.g., IEEE 802.11a and 802.11g wi-finetworks), digital audio broadcasting systems (e.g., HD Radio, T-DMB andISDB-TSB), terrestrial digital television systems (e.g., DVB-T, DVB-H,T-DMB and ISDB-T), WiMax wireless metropolitan area networks (MANs)(e.g., IEEE 802.16 networks), Mobile Broadband Wireless Access (MBWA)networks (e.g., IEEE 802.20 networks), Ultra Mobile Broadband (UMB)systems, Flash-OFDM cellular systems, and Ultra wideband (UWB) systems.Furthermore, the present disclosure may be used with communicationssystems such as Global System for Mobile communications (GSM) and/orcode division multiple access (CDMA) communications systems. Connectionsto such networks may be wireless or may use a line (e.g., digitalsubscriber lines (DSL), cable lines, and fiber optic lines).

Communication among the communication device 102, communication device104, and document server 114 may be accomplished using predefined andpublicly available (i.e., non-proprietary) communication standards orprotocols (e.g., those defined by the Internet Engineering Task Force(IETF) or the International Telecommunications Union-TelecommunicationsStandard Sector (ITU-T)), and/or proprietary protocols. For example,signaling communications (e.g., session setup, management, and teardown)may use a protocol such as the Session Initiation Protocol (SIP), whiledata traffic may be communicated using a protocol such as the Real-timeTransport Protocol (RTP), File Transfer Protocol (FTP), and/orHyper-Text Transfer Protocol (HTTP). A sharing session and othercommunications as described herein may be connection-based (e.g., usinga protocol such as the transmission control protocol/internet protocol(TCP/IP)) or connection-less (e.g., using a protocol such as the userdatagram protocol (UDP)). While document sharing is occurring, it isunderstood that other communications may occur, including, but notlimited to, voice calls, instant messages, audio and video, emails, andany other type of resource transfer, where a resource represents anydigital data.

It is understood that the sequence diagrams described herein illustratevarious exemplary functions and operations that may occur within variouscommunication environments. It is understood that these diagrams are notexhaustive and that various steps may be excluded from the diagrams toclarify the aspect being described. For example, it is understood thatsome actions, such as network authentication processes andnotifications, may have been performed prior to the first step of asequence diagram by one or both of the communication devices 102 and104. Such actions may depend on the particular type and configuration ofeach communication device 102 and 104, including how network access isobtained (e.g., cellular or WLAN access). Other actions may occurbetween illustrated steps or simultaneously with illustrated steps,including network messaging for call maintenance (including handoffs),communications with other devices (e.g., email, text messages, and/orvoice calls (including conference calls)), and similar actions.

Referring to FIG. 2, a sequence diagram illustrates one embodiment of amessage sequence 200 that may occur in the environment of FIG. 1 toshare a document such as the document 108 a having a document type of.xyz (e.g., document_108a.xyz). Both the communication device 102 andthe communication device 104 have applications that can open a documenttype .abc and a document type .def, but not the document type .xyz. Asingle application (e.g., the applications 106 a and 110 a) may open thedocument types .abc and .def on a single communication device 102 and104, or separate applications may be used for the different documenttypes (e.g., the applications 106 a and 106 b, and the applications 110a and 110 b).

In step 202, the communication device 102 sends a request for acommunication session to the document server 114. It is understood thatthe actual format of the request depends on the configuration of thecommunication device 102 and the document server 114. In step 204, thecommunication device 102 and the document server 114 establish thecommunication session. In step 206, the communication device 102 sendsthe document 108 a.xyz to the document server 114. The communicationdevice 102 also sends information to the document server 114 about thedocument_108a.xyz. Some or all of the information may be sent in therequest of step 202 or in one or more separate messages. The informationmay include information about the document_108a.xyz itself andinformation to be used in converting the document.

The information about the document_108a.xyz may include parameters suchas document type, number of pages if applicable, and size. Theinformation to be used in converting the document may include a desireddocument type, a desired resolution, and whether the document is to beonly viewable or both viewable and editable. The functional parametersof view only or view/edit may determine which document types areavailable for conversion. For example, a view only document may beconverted to images, while a view/edit document may be converted to adocument type that is commonly available. In the present example, thedocument types available for conversion are generally standardscompliant so that viewers/editors are readily available. Furthermore,being standards compliant makes conversion of the document back into the.xyz document type or other documents types more readily available as anoption. Being standards compliant may also provide additionalportability of the document since more devices may be able to view thedocument without the need for additional conversions.

As stated previously, the communication devices 102 and 104 can bothopen .abc and .def document types. For purposes of example, .abc and.def are both standards compliant document types and so it is likelythat both of the communication devices 102 and 104 either have thisfunctionality or can obtain such functionality (e.g., by downloading anapplication).

The document type into which the document_108a.xyz is to be convertedmay be selected in various ways. One way is that the communicationdevice 102 can tell the document server 114 what document types areavailable on the communication device 102. The document server 114 maythen select a document type based on one or more defined criteria, suchas which document types are most commonly used. Commonly used may bebased on information such as what document types are most commonlyrequested by the particular communication device 102 or the operatingsystem used by the communication device 102 and similar devices, or asgenerally requested from the document server 114 by all communicationdevices. Another way is for the communication device 102 to select aconversion option from the document server 114. For example, thedocument server 114 may provide a list of available document types tothe communication device 102 (e.g., either based on the document typessupported by the communication device 102 or simply a list of alldocument types supported by the server) and the communication device 102may inform the document server 114 which document type to use for theconversion. The communication device 102 and document server 114 maycommunicate to determine what document types are available and thenautomatically select the conversion document type or provide a list ofoptions (if available) to the user of the communication device 102.

Selection of view only or view/edit may modify the available options.For example, view only may result in the selection of a document typethat produces images, while view/edit may result in the selection of adocument type that allows easier editing. Examples of view only documenttypes include .gif, .jpg, .png, and similar image document types.Examples of view/edit document types include .txt, .html, .pdf, andother document types that are generally more easily edited than an imagefile. However, it is understood that overlap between view only andview/edit document types may occur such as when, for example, an imagefile is edited.

In step 208, the document server 114 converts the document 108 a. In thepresent example, document_108a.xyz is to be converted into view/editdocument type .abc and has multiple pages in its native format of .xyz.The document server 114 converts the document_108a.xyz into multiplepages 118 a-118 c of document type .abc. There may not be a one-to-onecorrespondence between pages of the document_108a.xyz in its nativeformat and the pages 118 a-118 c depending on the parameters used in theconversion. For example, if the document_108a.xyz is to be convertedinto a resolution of 768×1024 for display on the communication devices102 and 104, each page 118 a-118 c may contain more or less informationthan a page of the document_108a.xyz. Accordingly, the number of pages118 a-118 c may vary for the same document_108a.xyz depending on theparameters used for conversion.

In the present example, the document server 114 stores each page 118a-118 c in an individually accessible manner. For example, each page 118a-118 c may be stored as a separate file on the document server 114 orin another network accessible storage location (not shown) and may beaccessed using a path (e.g., a network address ending in the page name).In other embodiments, the pages 118 a-118 c may be stored in a singlefile and accessed by the document server 114 as requested. For example,a request may be received for page 118 b, and the document server 114may then extract that page from the file and respond to the request.

In step 210, the document server 114 may send one or more updates to thecommunication device 102. The update, which may not be sent in someembodiments, may be used to notify the communication device 102 that theconversion process is occurring. Multiple updates may be sent to notifythe communication device 102 of the progress of the conversion process.For example, separate updates may be sent to indicate that theconversion process is twenty-five percent complete, fifty percentcomplete, and seventy-five percent complete.

In step 212, the document server 114 sends access information for one ormore of the pages 118 a-118 c to the communication device 102. Forexample, the document server 114 may send one or more links to thecommunication device 102 where each link represents a network addressthat may be used to access the pages 118 a-118 c. Depending on theconfiguration of the document server 114 and/or the particular request,the document server 114 may send a single link (e.g., a link to thefirst page 118 a), may send multiple links (e.g., a link to each of thepages 118 a-118 c), or may send other information (e.g., a link to asingle page with information that enables the document server 114 toextract another desired page). In other embodiments, the document server114 may send a base path and an index or other information that providesthe communication device 102 with instructions needed to access each ofthe pages 118 a-118 c. For example, the base path may indicate the pathto a directory and the index may provide a list of page names or a rangeof page numbers. The communication device 102 may then append a pagename or number to the base path in order to access a particular page.The document server 114 may also send other information to thecommunication device 102 such as the converted document type (e.g.,.abc), the number of pages 118 a-118 c, the resolution of the pages 118a-118 c, and/or a document identifier (ID).

In the present embodiment, in step 214, the communication device 102 andthe document server 114 terminate the communication session establishedin step 204 after the page access information is sent to thecommunication device 102. Depending on the configuration of thecommunication device 102 and document server 114, the termination may beinitiated by either the communication device 102 and/or the documentserver 114. In other embodiments, the communication session may remainopen for later page transfers.

In step 216, the communication device 102 sends some or all of the pageaccess information to the communication device 104. For example, if thecommunication device 102 received an index of pages 118 a-118 c from thedocument server 114, the communication device 102 may send a link to asingle page (e.g., page_118a.abc) to the communication device 104.Alternatively, the communication device 102 may send a base path and apage identifier (e.g., a name or number) or an index of pages 118 a-118b to the communication device 104.

The communication device 102 may also send additional information, suchas an instruction that the communication device 104 retrieve aparticular page or simply whatever page is represented by the link(e.g., page_118a.abc). The instruction may be a request that must beapproved by the user of the communication device 104 or may be a commandthat causes the communication device 104 to automatically select thereferenced page_118a.abc. The communication device 102 may also sendinformation to the communication device 104 such as a document and/orpage prefix (e.g., document_108a and/or page_118a), the number of pages,and a mode type (e.g., view only or view/edit). In step 218, thecommunication device 102 requests the page_118a.abc from the documentserver 114 and, in step 220, the document server 114 sends the requestedpage_118a.abc to the communication device 102. In step 222, thecommunication device 104 requests the same page_118a.abc from thedocument server 114 and, in step 224, the document server 114 sends therequested page_118a.abc to the communication device 104.

As represented in steps 226 and 228, respectively, the communicationdevices 102 and 104 may both display a portion of the document 108 a.xyzas represented by page_118a.abc. As will be described below, thecommunication devices 102 and 104 may move between the pages 118 a-118c, edit the pages 118 a-118 c, save edited pages, and otherwise view andmanipulate the pages 118 a-118 c even though neither of thecommunication devices 102 and 104 can open the originaldocument_108a.xyz.

In some embodiments, the document server 114 may provide differentdocument types for each of the communication devices 102 and 104. Forexample, if the communication device 102 is able to open documents ofdocument type .abc but not document type .def, and the communicationdevice 104 is able to open documents of document type .def but notdocument type .abc, the document server 114 may providepages_118a.abc-page_118c.abc and pages_118a.def-page_118c.def. In suchembodiments, the communication device 102 may send the document prefixof document_108a to the communication device 104, and the communicationdevice 104 may request the appropriate document type from the documentserver 114. With information such as the display resolution of thecommunication devices 102 and 104, the document server 114 may createpages that contain the same information even though the document typesare different. In other embodiments, the communication devices 102 and104 may compensate based on information from the server. In still otherembodiments, the document server 114 may communicate with one or both ofthe communication devices 102 and 104 and/or the communication devices102 and 104 may communicate with each other to select page parameters.

It is understood that the communication device 102 and 104 may also becoupled via text chat, voice, video with voice, and/or other call types.For example, the users of the communication devices 102 and 104 may beinvolved in a voice call, and may then share the pages representing thedocument_108a.xyz for viewing and/or editing while still engaged in thevoice call. The users may also audibly relay document locations (e.g.,“turn to page 6”), at which time the other user may then instruct thecorresponding communication device to select that location.

It is understood that variations may exist in the order of steps in thesequence 200. For example, the communication device 102 may retrieve thepage_118a.abc before notifying the communication device 104 to retrievethe page (i.e., step 218 may occur before step 216).

Referring to FIG. 3, a sequence diagram illustrates one embodiment of amessage sequence 300 that may occur in the environment of FIG. 1 toselect another page for viewing/editing by the communication devices 102and 104. In the present example, the communication device 104 only hasaddress information for the page currently being viewed, but not forpages that have not yet been viewed.

In step 302, the communication device 102 sends access information foranother page (e.g., page_118b.abc) to the communication device 104. Thepage_118b.abc has not yet been accessed by the communication device 104and has not been retrieved from the document server 114 by either of thecommunication devices 102 and 104. The message of step 302 or a latermessage (not shown) may include a request that must be approved by theuser of the communication device 104 or may be an instruction thatcauses the communication device 104 to automatically select thereferenced page_118b.abc.

In step 304, the communication device 102 requests the page_118b.abcfrom the document server 114 and, in step 306, the document server 114sends the requested page_118b.abc to the communication device 102. Instep 308, the communication device 104 requests the same page_118b.abcfrom the document server 114 and, in step 310, the document server 114sends the requested page_118b.abc to the communication device 104. Asrepresented in steps 312 and 314, respectively, the communicationdevices 102 and 104 may both display page_118b.abc.

It is understood that variations may exist in the order of steps in thesequence 300. For example, the communication device 102 may retrieve thepage_118b.abc before notifying the communication device 104 to retrievethe page (i.e., step 304 may occur before step 302). In someembodiments, the sequence 300 may be used for any page other than thecurrently viewed page. In other embodiments, the sequence 300 may beused for new (not yet viewed) pages and/or pages that are no longercached if caching is performed.

Referring to FIG. 4, a sequence diagram illustrates another embodimentof a message sequence 400 that may occur in the environment of FIG. 1 toselect another page for viewing/editing by the communication device 102.In the present example, the communication devices 102 and 104 store someor all previously viewed pages in memory. For example, the communicationdevices 102 and 104 may store the previous page or a previous number ofpages (e.g., based on page count or an available amount of memory in thecommunication device).

In step 402, while viewing page_118b.abc, the communication device 102sends a page identifier for another page (e.g., page_118a.abc) to thecommunication device 104. The page_118a.abc has been previouslyretrieved from the document server 114 by both of the communicationdevices 102 and 104. The message of step 402 or a later message (notshown) may include a request that must be approved by the user of thecommunication device 104 or may be an instruction that causes thecommunication device 104 to automatically select the referencedpage_118a.abc. In steps 404 and 406, respectively, the communicationdevices 102 and 104 retrieve page_118a.abc from memory. As representedin steps 408 and 410, respectively, the communication devices 102 and104 may both display page_118a.abc.

It is understood that the sequences 300 and 400 may be combineddepending on whether a page has expired (e.g., is no longer cached for acommunication device) or other parameters. For example, one of thecommunication devices 102 and 104 may retrieve the page from memorywhile the other communication device retrieves the page from thedocument server 114. The page identifier of step 402 may be a similar oridentical message to that of step 302 of FIG. 3, and the communicationdevice 104 may determine whether the page is cached before retrievingthe page. The message sent from the communication device 102 to thecommunication device 104 may contain a flag or other indicator to notifythe communication device 104 that the page has been previously viewed.

Referring to FIG. 5, a sequence diagram illustrates one embodiment of amessage sequence 500 that may occur in the environment of FIG. 1 when apage is edited. In the present example, both of the communicationdevices 102 and 104 may edit the page being viewed and the edits may belocal only, may be sent to the other device, and/or may be sent to thedocument server 114.

In step 502, the communication device 102 edits the current page (e.g.,page_118a.abc). For example, if the page_118a.abc is of document type.html or .pdf, the communication device 102 may be used to edit text andattributes of the page_118a.abc, as well as perform markups and otheredits. If the page_118a.abc is an image file, the edits are limited tothose possible with images. It is understood that the possible editsdepend on the document type and the applications available on thecommunication device 102.

In step 504, the edited page or page edits may be sent to thecommunication device 104. In some embodiments, the entire page withedits may be sent. In other embodiments, only edits may be sent and thecommunication device 104 may then apply those edits to its local versionof page_118a.abc. In step 506, the communication device 102 may send theedited page or page edits to the document server 114. The documentserver 114 may then store the edited page with a user ID to indicate whomade the edits. For example, the document server 114 may store thepage_118a.abc as page_118a.abc.user1 and save the revised pageseparately from the original page_118a.abc. This enables the documentserver 114 to provide a revision history and to retrieve earlierdocument versions. As represented in steps 510 and 512, respectively,the communication devices 102 and 104 may both display the editedpage_118a.abc. It is understood that the communication device 104 mayalso provide an alternate page view to display current local edits madeby the communication device 104 but not yet sent to the communicationdevice 102 or document server 114 in some embodiments.

In step 514, the communication device 104 edits the current page (e.g.,page_118a.abc) as described with respect to step 502 for thecommunication device 102. As with the communication device 102, thepossible edits depend on the document type and the applicationsavailable on the communication device 104. In step 516, the edited pageor page edits may be sent to the communication device 102. In someembodiments, the entire page with edits may be sent. In otherembodiments, only edits may be sent and the communication device 102 maythen apply those edits to the page_118a.abc. In step 518, thecommunication device 104 may send the edited page or page edits to thedocument server 114. The document server 114 may then store the editedpage with a user ID to indicate who made the edits. For example, thedocument server 114 may store the page_118a.abc as page_118a.abc.user2and save the revised page separately from the original page_118a.abc.

As represented in steps 522 and 524, respectively, the communicationdevices 102 and 104 may both display the edited page_118a.abc. It isunderstood that the communication device 102 may also provide analternate page view to display current local edits made by thecommunication device 102 but not yet sent to the communication device104 or document server 114 in some embodiments.

Referring to FIG. 6, a sequence diagram illustrates one embodiment of amessage sequence 600 that may occur in the environment of FIG. 1 toprocess a document (e.g., the document_108a.xyz) to be shared by thecommunication device 102. FIG. 6 illustrates, for example, a morespecific embodiment of steps 202-214 of FIG. 2 using SIP for signalingand TCP/IP for document transfer. In some embodiments, the communicationdevices 102 and 104 in the present example may be endpoints in apeer-to-peer network as described below with respect to FIG. 14.

In step 602, the communication device 102 sends a SIP INVITE message tothe document server 114 containing document parameters as previouslydescribed. For example, the SIP INVITE may contain a request fordocument conversion (e.g., Content_Type=application/document-conversion,Content_Length=0) and other parameters, such as a desired resolution forconverted pages. It is understood that this information need not be inthe INVITE message, but may be contained in other SIP signalingmessages, such as INFO messages. In step 604, the document server 114returns a 100 TRY. In step 606, the communication device 102 and thedocument server 114 establish a TCP/IP communication session, which isused in step 608 to transfer the document_108a.xyz from thecommunication device 102 to the document server 114. In step 610, thedocument server 114 processes the document_108a.xyz into pages (e.g.,page_118a.abc-page_108c.abc) as previously described. During step 612,SIP UPDATE (or INFO) messages may be sent from the document server 114to the communication device 102 to notify the communication device 102that the document processing is underway and/or to provide statusupdates, such a percentage of the processing completed.

In step 614, once the processing in completed, the document server 114sends a 200 OK to the communication device 102 with the page informationas previously described (e.g., path, number of pages, and documenttype). In step 616, the communication device 102 responds to the 200 OKof step 614 with an ACK, and the document server 114 sends a BYE to thecommunication device 102 in step 618. In step 620, the communicationdevice 102 and document server 114 may tear down the TCP/IP session.

Referring to FIG. 7, a sequence diagram illustrates one embodiment of amessage sequence 700 that may occur in the environment of FIG. 1 toshare a page (e.g., the page_118a.abc) between the communication device102 and the communication device 104. FIG. 7 illustrates, for example,using SIP signaling to set up a communication session for documentsharing between the communication devices 102 and 104 in a more specificembodiment of step 216 of FIG. 2, as well as a more specific embodimentof steps 218-224 of FIG. 2 using HTTP for page retrieval. In someembodiments, the communication devices 102 and 104 in the presentexample may be endpoints in a peer-to-peer network as described belowwith respect to FIG. 14.

In step 702, the communication device 102 sends a SIP INVITE to thecommunication device 104 to set up a document sharing session. TheINVITE contains page parameters to be used for document sharing aspreviously described. In step 704, the communication device 104 returnsa 100 TRY and, in step 706, returns a 200 OK to indicate that it isprepared for the document sharing session. In step 708, thecommunication device 102 sends an ACK to the communication device 104.In step 710, the communication device 102 sends an HTTP GET call to thedocument server 114 with parameters identifying the page to beretrieved. In step 712, the document server 114 sends a 200 OK withpage_118a.abc to the communication device 102. In step 714, thecommunication device 104 sends an HTTP GET call to the document server114 with parameters identifying the page to be retrieved. In step 716,the document server 114 sends a 200 OK with page_118a.abc to thecommunication device 104.

It is understood that variations may exist in the order of steps in thesequence 700. For example, the communication device 102 may retrieve thepage_118a.abc before notifying the communication device 104 to retrievethe page (e.g., step 710 may occur before step 702).

Referring to FIG. 8, a sequence diagram illustrates one embodiment of amessage sequence 800 that may occur in the environment of FIG. 1 toshare a new page between the communication device 102 and thecommunication device 104. FIG. 8 illustrates, for example, a morespecific embodiment of steps 302-310 of FIG. 3 using SIP signaling andHTTP for page retrieval. In some embodiments, the communication devices102 and 104 in the present example may be endpoints in a peer-to-peernetwork as described below with respect to FIG. 14.

In step 802, the communication device 102 sends a SIP INFO (or UPDATE)message to the communication device 104 to indicate that thecommunication device 104 should display another page (e.g.,page_118b.abc). The INFO message contains page parameters to be used forretrieving the new page as previously described. In step 704, thecommunication device 104 returns a 200 OK to acknowledge the INFOmessage. In step 806, the communication device 102 sends an HTTP GETcall to the document server 114 with parameters identifying the new pageto be retrieved. In step 808, the document server 114 sends a 200 OKwith the page_118b.abc to the communication device 102. In step 810, thecommunication device 104 sends an HTTP GET call to the document server114 with parameters identifying the new page to be retrieved. In step812, the document server 114 sends a 200 OK with the page_118b.abc tothe communication device 104.

It is understood that variations may exist in the order of steps in thesequence 800. For example, the communication device 102 may retrieve thepage_118b.abc before notifying the communication device 104 to retrievethe page (e.g., step 806 may occur before step 802).

Referring to FIG. 9, a flow chart illustrates one embodiment of a method900 showing how a communication device (e.g., the communication device102 of FIG. 1) may share a document with another communication device(e.g., the communication device 104 of FIG. 1). The method 900 uses adocument server (e.g., the document server 114 of FIG. 1) and a networkaccessible storage location, which may be the document server 114 insome embodiments.

In step 902, the communication device 102 receives input indicating thata document (e.g., the document_108a.xyz) on the communication device 102is to be shared with the communication device 104. In step 904, adetermination is made as to whether the document type ofdocument_108a.xyz is supported by the communication device 102. If thedocument type is supported and the document_108a.xyz can be opened bythe communication device 102 (e.g., one of the applications 106 a-106 ccan open the document_108a), the method 900 moves to step 906 and ends.Although not shown, the document_108a may then be handled by theappropriate application 106 a-106 c. If step 904 determines that thecommunication device 102 does not have access to an application requiredfor use of the document type .xyz, the method 900 moves to step 908.

In step 908, the communication device 102 sends the document_108a.xyzand one or more document parameters to the document server 114 forprocessing as described previously. The document server 114 processesthe document_108a.xyz into multiple pages (e.g.,page_118a.abc-page_118c.abc) based on the one or more documentparameters. Each of the pages is a document type (e.g., document type.abc) that is different from the document type .xyz and is supported byan application present on the communication device 102.

In step 910, the communication device 102 receives access informationfor page_118a.abc from the document server 114, such as a networkaddress that identifies a location of the page on the network accessiblestorage location. In step 912, the communication device 102 sendsinformation representing at least one parameter of page_118a.abc and thenetwork address of page_118a.abc to the communication device 104.Although not shown, it is understood that in some embodiments thecommunication device 102 may send a request to share thedocument_108a.xyz and/or the page_118a.abc and the communication device104 may decline or accept the request. In step 914, the communicationdevice 102 uses the network address to retrieve page_118a.abc from thenetwork accessible storage location. In step 916, the communicationdevice 102 displays page_118a.abc on a display that is coupled to orpart of the communication device.

In step 918, a determination may be made as to whether another page(e.g., the page_118b.abc) is to be viewed. For example, additional inputmay be received by the communication device 102. If the determinationindicates that another page is to be viewed, the method 900 returns tostep 912. If the determination indicates that there is not currentlyanother page to view, the method 900 continues displaying the currentpage and moves to step 920. In step 920, a determination may be made asto whether the sharing session is over. If it is, the method 900 movesto step 922 and ends. If the session is to continue, the method 900returns to step 918.

It is understood that variations may exist in the order of steps in themethod 900. For example, the communication device 102 may retrieve thepage_118a.abc before notifying the communication device 104 to retrievethe page (e.g., step 914 may occur before step 912).

Referring to FIG. 10, a flow chart illustrates one embodiment of amethod 1000 showing how a communication device (e.g., the communicationdevice 104 of FIG. 1) may obtain pages (e.g., page_118a.abc throughpage_118c.abc) representing a document (e.g., document_108a.xyz) to beshared from another communication device (e.g., the communication device102 of FIG. 1). The method 1000 uses a document server (e.g., thedocument server 114 of FIG. 1) and a network accessible storagelocation, which may be the document server 114 in some embodiments.

In step 1000, the communication device 104 receives a message from thecommunication device 102. The message indicates that the communicationdevice 102 is requesting to share a document with the communicationdevice 104. Although not shown, it is understood that the communicationdevice 104 may decline or accept the request in some embodiments. Instep 1004, the communication device 104 receives access information forpage_118a.abc from the communication device 102 as previously described.The communication device 104 may also receive a notification to get thepage identified in the access information from the communication device102.

In step 1006, the communication device 104 retrieves page_118a.a fromthe network accessible storage location and, in step 1008, displayspage_118a.abc on a display that is coupled to or part of thecommunication device. In step 1010, a determination may be made as towhether another page (e.g., page_118b.abc) is to be viewed. For example,a determination may be made as to whether another page notification hasbeen received from the communication device 102. If the determinationindicates that another page (e.g., the page_118b.abc) is to be viewed,the method 1000 returns to step 1006. If the determination indicatesthat there is not currently another page to view, the method 1000continues displaying the current page and moves to step 1012. In step1012, a determination may be made as to whether the sharing session isover. If it is, the method 1000 moves to step 1014 and ends. If thesession is to continue, the method 1000 returns to step 1010.

Referring to FIG. 11, a flow chart illustrates one embodiment of amethod 1100 showing how a communication device (e.g., the communicationdevice 102 or 104 of FIG. 1) may edit and share a page (e.g., thepage_118a.abc) with another communication device (e.g., the other of thecommunication devices 102 or 104 of FIG. 1). It is understood thateither communication device 102 or 104 may edit page_118a.abc and sendthe page to the other communication device. The sharing session in thepresent example does not limit editing to the communication device 102that is sharing the document, nor does the session limit editing to adevice that has control of the session (e.g., there is no “presenter”designation that is needed by a communication device to edit thedocument), although it is understood that these limitations may exist insome embodiments. Accordingly, while either communication device 102 or104 can edit the page_118a.abc at any time during the session, thepresent example uses the communication device 102 as the communicationdevice performing the edits. The method 1100 uses a document server(e.g., the document server 114 of FIG. 1) and a network accessiblestorage location, which may be the document server 114 in someembodiments.

In step 1102, the communication device 102 receives input to edit thecurrently displayed page_118a.abc and, in step 1104, performs anddisplays the edits. In step 1106, a determination is made as to whetherto send the edited page or edits to the communication device 104. Ifnot, the method 1100 moves to step 1110. If the edited page/edits are tobe sent, the communication device 102 sends them to the communicationdevice 104 in step 1108 and moves to step 1110. The sending step 1108may update the page_118a.abc on the communication device 104 in realtime. It is noted that the edited page/edits are not sent through thedocument server 114 in step 1108 or otherwise retrieved by thecommunication device 104 from the document server 114, but are sent fromthe communication device 102 to the communication device 104. In step1110, a determination is made as to whether to send the edited page oredits to the document server 114 and/or the network accessible storagelocation. If not, the method 1100 moves to step 1114 and ends. If theedited page/edits are to be sent, the communication device 102 sendsthem to the document server 114 and/or the network accessible storagelocation in step 1112 before ending in step 1114.

It is understood that variations may exist in the order of steps in themethod 900. For example, the communication device 102 may send theedited page_118a.abc to the document server 114 before sending it to thecommunication device 104 (e.g., steps 1110/1112 may occur before steps1106/1108).

Referring to FIG. 12, a flow chart illustrates one embodiment of amethod 1200 showing how a communication device (e.g., the communicationdevice 102 or 104 of FIG. 1) may receive and display an edited page(e.g., page_118a.abc) from another communication device (e.g., the otherof the communication devices 102 or 104 of FIG. 1). It is understoodthat either communication device 102 or 104 may receive the editedpage_118a.abc from the other communication device. Accordingly, whileeither communication device 102 or 104 can edit the page_118a.abc at anytime during the session and send it to the other communication device,the present example uses the communication device 104 as thecommunication device receiving the edits. In step 1202, thecommunication device 104 receives the edited page_118a.abc and, in step1204, displays the edited page.

Referring to FIG. 13, in another embodiment, an environment 1300 isillustrated that may be similar to the environment 100 of FIG. 1 withthe two communication devices 102 and 104 and the document server 114.In the present example, the document server 114 includes a web interface1302 and another interface 1304, which may be any interface that can beused to couple the document server 114 to a networked device. Forexample, the web interface 1302 may be used to provide access to thedocuments/pages 118 a-118 c to a browser 1310, such as a web browser ona computing device. The other interface 1304 may be used to provideaccess to the documents/pages 118 a-118 c to a television 1306 or othernon-communication device 1308, which may be any computing device. Oneexample of the other interface 1304 is described in U.S. patentapplication Ser. No. 12/728,024, filed on Mar. 19, 2010, and entitledSYSTEM AND METHOD FOR PROVIDING A VIRTUAL PEER-TO-PEER ENVIRONMENT,which is hereby incorporated by reference in its entirety.

It is understood that the document server 114 may provide variousdocument types of the original document_108a.xyz depending on the devicethat is requesting access. For example, the document_108a.xyz may beconverted to .html pages for the browser 1310, and may be converted to asuitable television format for the television 1306. This enables devicesother than the communication devices 102 and 104 to view the pages 118a-118 c as viewed by the communication devices. In other embodiments,the other devices may also be able to edit the pages, view edited pagesas stored on the document server 114, and/or save edits to the documentserver 114. In still other embodiments, the devices may be able toparticipate in direct sharing.

Referring to FIG. 14, one embodiment of a peer-to-peer hybrid system1400 is illustrated. The system 1400 includes an access server 1402 thatis coupled to endpoints 1404 and 1406 via a packet network 1408 that mayform part or all of the network 120 of FIG. 1. In some embodiments, theendpoints 1404 and 1406 may represent peer-to-peer functionality presenton the communication devices 102 and 104 of FIG. 1, and so thepeer-to-peer architectures and functions described in this embodimentand following embodiments may be used with the preceding embodiments.

Communication between the access server 1402, endpoint 1404, andendpoint 1406 is accomplished using predefined and publicly available(i.e., non-proprietary) communication standards or protocols (e.g.,those defined by the IETF or the ITU-T). For example, signalingcommunications (e.g., session setup, management, and teardown) may use aprotocol such as SIP, while actual data traffic may be communicatedusing a protocol such as RTP. As will be seen in the following examples,the use of standard protocols for communication enables the endpoints1404 and 1406 to communicate with any device that uses the samestandards. The communications may include, but are not limited to, voicecalls, instant messages, audio and video, emails, and any other type ofresource transfer, where a resource represents any digital data. In thefollowing description, media traffic is generally based on UDP, whileauthentication is based on the TCP/IP. However, it is understood thatthese are used for purposes of example and that other protocols may beused in addition to or instead of UDP and TCP/IP.

Connections between the access server 1402, endpoint 1404, and endpoint1406 may include wireline and/or wireless communication channels. In thefollowing description, it is understood that the term “direct” meansthat there is no endpoint or access server in the communicationchannel(s) between the endpoints 1404 and 1406, or between eitherendpoint and the access server. Accordingly, the access server 1402,endpoint 1404, and endpoint 1406 are directly connected even if otherdevices (e.g., routers, firewalls, and other network elements) arepositioned between them. In addition, connections to endpoints,locations, or services may be subscription based, with an endpoint onlyhaving access if the endpoint has a current subscription. Furthermore,the following description may use the terms “user” and “endpoint”interchangeably, although it is understood that a user may be using anyof a plurality of endpoints. Accordingly, if an endpoint logs in to thenetwork, it is understood that the user is logging in via the endpointand that the endpoint represents the user on the network using theuser's identity.

The access server 1402 stores profile information for a user, a sessiontable to track what users are currently online, and a routing table thatmatches the address of an endpoint to each online user. The profileinformation includes a “buddy list” for each user that identifies otherusers (“buddies”) that have previously agreed to communicate with theuser. Online users on the buddy list will show up when a user logs in,and buddies who log in later will directly notify the user that they areonline (as described with respect to FIG. 4). The access server 1402provides the relevant profile information and routing table to each ofthe endpoints 1404 and 1406 so that the endpoints can communicatedirectly with one another. Accordingly, in the present embodiment, onefunction of the access server 1402 is to serve as a storage location forinformation needed by an endpoint in order to communicate with otherendpoints and as a temporary storage location for requests, voicemails,etc., as will be described later in greater detail.

With additional reference to FIG. 15a , one embodiment of anarchitecture 1500 for the access server 1402 of FIG. 14 is illustrated.The architecture 1500 includes functionality that may be provided byhardware and/or software, and that may be combined into a singlehardware platform or distributed among multiple hardware platforms. Forpurposes of illustration, the access server in the following examples isdescribed as a single device, but it is understood that the term appliesequally to any type of environment (including a distributed environment)in which at least a portion of the functionality attributed to theaccess server is present.

In the present example, the architecture includes web services 1502(e.g., based on functionality provided by XML, SOAP, NET, MONO), webserver 1504 (using, for example, Apache or IIS), and database 1506(using, for example, mySQL or SQLServer) for storing and retrievingrouting tables 1508, profiles 1510, and one or more session tables 1512.Functionality for a STUN (Simple Traversal of UDP through NATs (NetworkAddress Translation)) server 1514 is also present in the architecture1500. As is known, STUN is a protocol for assisting devices that arebehind a NAT firewall or router with their packet routing. Thearchitecture 1500 may also include a redirect server 1516 for handlingrequests originating outside of the system 1400. One or both of the STUNserver 1514 and redirect server 1516 may be incorporated into the accessserver 1402 or may be a standalone device. In the present embodiment,both the server 1504 and the redirect server 1516 are coupled to thedatabase 1506.

Referring to FIG. 15b , one embodiment of an architecture 1550 for theendpoint 1404 (which may be similar or identical to the endpoint 1406)of FIG. 14 is illustrated. It is understood that that term “endpoint”may refer to many different devices having some or all of the describedfunctionality, including a computer, a VoIP telephone, a personaldigital assistant, a cellular phone, or any other device having an IPstack upon which the needed protocols may be run. The architecture 1550includes an endpoint engine 1552 positioned between a graphical userinterface (GUI) 1554 and an operating system 1556. The GUI 1554 providesuser access to the endpoint engine 1552, while the operating system 1556provides underlying functionality, as is known to those of skill in theart.

The endpoint engine 1552 may include multiple components and layers thatsupport the functionality required to perform the operations of theendpoint 1404. For example, the endpoint engine 1552 includes asoftswitch 1558, a management layer 1560, an encryption/decryptionmodule 1562, a feature layer 1564, a protocol layer 1566, aspeech-to-text engine 1568, a text-to-speech engine 1570, a languageconversion engine 1572, an out-of-network connectivity module 1574, aconnection from other networks module 1576, a p-commerce (e.g., peercommerce) engine 1578 that includes a p-commerce agent and a p-commercebroker, and a cellular network interface module 1580.

Each of these components/layers may be further divided into multiplemodules. For example, the softswitch 1558 includes a call controlmodule, an instant messaging (IM) control module, a resource controlmodule, a CALEA (Communications Assistance to Law Enforcement Act)agent, a media control module, a peer control module, a signaling agent,a fax control module, and a routing module.

The management layer 1560 includes modules for presence (i.e., networkpresence), peer management (detecting peers and notifying peers of beingonline), firewall management (navigation and management), mediamanagement, resource management, profile management, authentication,roaming, fax management, and media playback/recording management.

The encryption/decryption module 1562 provides encryption for outgoingpackets and decryption for incoming packets. In the present example, theencryption/decryption module 1562 provides application level encryptionat the source, rather than at the network. However, it is understoodthat the encryption/decryption module 1562 may provide encryption at thenetwork in some embodiments.

The feature layer 1564 provides support for various features such asvoice, video, IM, data, voicemail, file transfer, file sharing, class 5features, short message service (SMS), interactive voice response (IVR),faxes, and other resources. The protocol layer 1566 includes protocolssupported by the endpoint, including SIP, HTTP, HTTPS, STUN, RTP, SRTP,and ICMP. It is understood that these are examples only, and that feweror more protocols may be supported.

The speech-to-text engine 1568 converts speech received by the endpoint(e.g., via a microphone or network) into text, the text-to-speech engine1570 converts text received by the endpoint into speech (e.g., foroutput via a speaker), and the language conversion engine 1572 may beconfigured to convert inbound or outbound information (text or speech)from one language to another language. The out-of-network connectivitymodule 1574 may be used to handle connections between the endpoint andexternal devices (as described with respect to FIG. 12), and theconnection from other networks module 1576 handles incoming connectionattempts from external devices. The cellular network interface module1580 may be used to interact with a wireless network.

With additional reference to FIG. 15c , the cellular network interfacemodule 1580 is illustrated in greater detail. Although not shown in FIG.15b , the softswitch 1558 of the endpoint architecture 1550 includes acellular network interface for communication with the cellular networkinterface module 1580. In addition, the cellular network interfacemodule 1580 includes various components such as a call control module, asignaling agent, a media manager, a protocol stack, and a deviceinterface. It is noted that these components may correspond to layerswithin the endpoint architecture 1550 and may be incorporated directlyinto the endpoint architecture in some embodiments.

Referring again to FIG. 15b , in operation, the softswitch 1558 usesfunctionality provided by underlying layers to handle connections withother endpoints and the access server 1402, and to handle servicesneeded by the endpoint 1404. For example, as is described below ingreater detail with respect to FIGS. 16a and 16b , incoming and outgoingcalls may utilize multiple components within the endpoint architecture1550.

Referring to FIG. 16a , a sequence diagram 1600 illustrates an exemplaryprocess by which the endpoint 1404 may initiate a call to the endpoint1406 using various components of the architecture 1550. Prior to step1602, a user (not shown) initiates a call via the GUI 1554. In step1602, the GUI 1554 passes a message to the call control module (of thesoftswitch 1558) to make the call. The call control module contacts thepeer control module (softswitch 1558) in step 1604, which detects thepeer (if not already done), goes to the routing table (softswitch 1558)for the routing information, and performs similar operations. It isunderstood that not all interactions are illustrated. For example, thepeer control module may utilize the peer management module (of themanagement layer 1560) for the peer detection. The call control modulethen identifies a route for the call in step 1606, and sends message tothe SIP protocol layer (of the protocol layer 1566) to make the call instep 1608. In step 1610, the outbound message is encrypted (using theencryption/decryption module 1562) and the message is sent to thenetwork via the OS 1556 in step 1612.

After the message is sent and prior to receiving a response, the callcontrol module instructs the media control module (softswitch 1558) toestablish the needed near-end media in step 1614. The media controlmodule passes the instruction to the media manager (of the managementlayer 1560) in step 1616, which handles the establishment of thenear-end media.

With additional reference to FIG. 16b , the message sent by the endpoint1404 in step 1612 (FIG. 16a ) is received by the endpoint 1406 andpassed from the OS to the SIP protocol layer in step 1652. The messageis decrypted in step 1654 and the call is offered to the call controlmodule in step 1656. The call control module notifies the GUI of anincoming call in step 1658 and the GUI receives input identifyingwhether the call is accepted or rejected (e.g., by a user) in step 1660.In the present example, the call is accepted and the GUI passes theacceptance to the call control module in step 1662. The call controlmodule contacts the peer control module in step 1664, which identifies aroute to the calling endpoint and returns the route to the call controlmodule in step 1666. In steps 1668 and 1670, the call control moduleinforms the SIP protocol layer that the call has been accepted and themessage is encrypted using the encryption/decryption module. Theacceptance message is then sent to the network via the OS in step 1672.

In the present example, after the call control module passes theacceptance message to the SIP protocol layer, other steps may occur toprepare the endpoint 1406 for the call. For example, the call controlmodule instructs the media control module to establish near-end media instep 1674, and the media control module instructs the media manager tostart listening to incoming media in step 1676. The call control modulealso instructs the media control module to establish far-end media (step1678), and the media control module instructs the media manager to starttransmitting audio in step 1680.

Returning to FIG. 16a , the message sent by the endpoint 1406 (step1672) is received by the OS and passed on to the SIP protocol layer instep 1618 and decrypted in step 1620. The message (indicating that thecall has been accepted) is passed to the call control module in step1622 and from there to the GUI in step 1624. The call control modulethen instructs the media control module to establish far-end media instep 1626, and the media control module instructs the media manager tostart transmitting audio in step 1628.

Referring to FIG. 17 (and using the endpoint 1404 as an example), asequence diagram 1700 illustrates an exemplary process by which theendpoint 1404 may authenticate with the access server 1402 and thencommunicate with the endpoint 1406. As will be described, afterauthentication, all communication (both signaling and media traffic)between the endpoints 1404 and 1406 occurs directly without anyintervention by the access server 1402. In the present example, it isunderstood that neither endpoint is online at the beginning of thesequence, and that the endpoints 1404 and 1406 are “buddies.” Asdescribed above, buddies are endpoints that have both previously agreedto communicate with one another.

In step 1702, the endpoint 1404 sends a registration and/orauthentication request message to the access server 1402. If theendpoint 1404 is not registered with the access server 1402, the accessserver will receive the registration request (e.g., user ID, password,and email address) and will create a profile for the endpoint (notshown). The user ID and password will then be used to authenticate theendpoint 1404 during later logins. It is understood that the user ID andpassword may enable the user to authenticate from any endpoint, ratherthan only the endpoint 1404.

Upon authentication, the access server 1402 updates a session tableresiding on the server to indicate that the user ID currently associatedwith the endpoint 1404 is online. The access server 1402 also retrievesa buddy list associated with the user ID currently used by the endpoint1404 and identifies which of the buddies (if any) are online using thesession table. As the endpoint 1406 is currently offline, the buddy listwill reflect this status. The access server 1402 then sends the profileinformation (e.g., the buddy list) and a routing table to the endpoint1404 in step 1704. The routing table contains address information foronline members of the buddy list. It is understood that steps 1702 and1704 represent a make and break connection that is broken after theendpoint 1404 receives the profile information and routing table.

In steps 1706 and 1708, the endpoint 1406 and access server 1402 repeatsteps 1702 and 1704 as described for the endpoint 1404. However, becausethe endpoint 1404 is online when the endpoint 1406 is authenticated, theprofile information sent to the endpoint 1406 will reflect the onlinestatus of the endpoint 1404 and the routing table will identify how todirectly contact it. Accordingly, in step 1710, the endpoint 1406 sendsa message directly to the endpoint 1404 to notify the endpoint 1404 thatthe endpoint 1406 is now online. This also provides the endpoint 1404with the address information needed to communicate directly with theendpoint 1406. In step 1712, one or more communication sessions may beestablished directly between the endpoints 1404 and 1406.

Additional details of endpoints and endpoint functionality, includingrouting and NAT traversal functionality that may be used to establishand maintain a sharing session as described herein, are provided in U.S.Pat. No. 7,656,870, filed on Mar. 15, 2005, and entitled SYSTEM ANDMETHOD FOR PEER-TO-PEER HYBRID COMMUNICATIONS; U.S. Pat. No. 7,570,636,filed on Aug. 30, 2005, and entitled SYSTEM AND METHOD FOR TRAVERSING ANAT DEVICE FOR PEER-TO-PEER HYBRID COMMUNICATIONS; and U.S. patentapplication Ser. No. 12/705,925, filed on Feb. 15, 2010, and entitledSYSTEM AND METHOD FOR STRATEGIC ROUTING IN A PEER-TO-PEER ENVIRONMENT,as previously incorporated by reference in their entirety.

Referring to FIG. 18, one embodiment of a computer system 1800 isillustrated. The computer system 1800 is one possible example of asystem component or computing device such as a communication device, adocument server, an endpoint, and/or an access server. The computersystem 1800 may include a controller (e.g., a central processing unit(“CPU”)) 1802, a memory unit 1804, an input/output (“I/O”) device 1806,and a network interface 1808. The components 1802, 1804, 1806, and 1808are interconnected by a transport system (e.g., a bus) 1810. A powersupply (PS) 1812 may provide power to components of the computer system1800, such as the CPU 1802 and memory unit 1804. It is understood thatthe computer system 1800 may be differently configured and that each ofthe listed components may actually represent several differentcomponents. For example, the CPU 1802 may actually represent amulti-processor or a distributed processing system; the memory unit 1804may include different levels of cache memory, main memory, hard disks,and remote storage locations; the I/O device 1806 may include monitors,keyboards, and the like; and the network interface 1808 may include oneor more network cards providing one or more wired and/or wirelessconnections to the network 120 (FIG. 1) and/or the network 1408 (FIG.14). Therefore, a wide range of flexibility is anticipated in theconfiguration of the computer system 1800.

The computer system 1800 may use any operating system (or multipleoperating systems), including various versions of operating systemsprovided by Microsoft (such as WINDOWS), Apple (such as Mac OS X), UNIX,and LINUX, and may include operating systems specifically developed forhandheld devices, personal computers, and servers depending on the useof the computer system 1800. The operating system, as well as otherinstructions (e.g., for the endpoint engine 1552 of FIG. 15b if anendpoint), may be stored in the memory unit 1804 and executed by theprocessor 1802. For example, if the computer system 1800 is one ofcommunication devices 102 and 104 or one of the endpoints 1404 and 1406,the memory unit 1804 may include instructions for performing some or allof the message sequences and methods described with respect to FIGS.2-12 and 16 a-17.

Accordingly, in one embodiment, a method for sharing a document maycomprise receiving, by a first communication device, input indicatingthat a document on the first communication device is to be shared with asecond communication device; determining, by the first communicationdevice, that the document is a first document type and that the firstcommunication device does not have access to an application required todisplay the first document type; sending, by the first communicationdevice, information representing at least one parameter to be used inprocessing the document to a document server; sending, by the firstcommunication device, the document to the document server for processinginto a plurality of pages based on the at least one parameter, whereineach of the plurality of pages is a second document type that isdifferent from the first document type, and wherein the second documenttype is supported by an application present on the first communicationdevice; receiving, by the first communication device from the documentserver, access information corresponding to a first page of theplurality of pages, wherein the address information identifies alocation of the first page on a network accessible storage location;retrieving, by the first communication device, the first page from thenetwork accessible storage location using the access information;sending, by the first communication device, information representing atleast one parameter of the first page and access information for thefirst page to the second communication device; displaying, by the firstcommunication device, the first page on a display; selecting, by thefirst communication device, a second page of the plurality of pages;sending, by the first communication device, information requesting thesecond page to the network accessible storage location; retrieving, bythe first communication device, the second page from the networkaccessible storage location; sending, by the first communication device,information needed to obtain the second page from the network accessiblestorage location to the second communication device; and displaying, bythe first communication device, the second page on the display. Themethod may further comprise receiving, by the first communication devicefrom the document server, a plurality of network addresses correspondingto the plurality of pages, wherein each of the plurality of networkaddresses identifies the location of one of the plurality of pages onthe network accessible storage location. Sending the information neededto obtain the second page from the network accessible storage locationto the second communication device may include sending a network addressthat corresponds to the second page from the plurality of networkaddresses. The method may further comprise receiving, by the firstcommunication device from the document server, an index of the pluralityof pages, wherein the access information received from the documentserver includes a base network address of the plurality of pages, andwherein the first communication device is configured to retrieve any ofthe plurality of pages using the index and the base network address.Sending the information needed to obtain the second page from thenetwork accessible storage location to the second communication devicemay include sending the base network address and index informationcorresponding to the second page. Sending, by the first communicationdevice, information needed to obtain the second page from the networkaccessible storage location to the second communication device mayinclude instructing the second communication device to retrieve thesecond page. The method may further comprise performing, by the firstcommunication device, an edit to the first page to create a modifiedfirst page; and sending, by the first communication device, the edit tothe second communication device. Sending the edit may include sendingthe modified first page. The method may further comprise sending, by thefirst communication device, the modified first page to the documentserver. The method may further comprise receiving, by the firstcommunication device, an edit to the first page from the secondcommunication device, wherein the edit creates a modified first page.The information representing at least one parameter to be used inprocessing the document may include the first document type, a displayresolution of the first communication device, and at least one of thesecond document type and a share mode, wherein the share mode identifiesa view only mode or a view/edit mode. The method may further comprisereceiving, by the first communication device from the document server,information corresponding to the plurality of pages, wherein theinformation includes a total number of pages and the second documenttype. Sending, by the first communication device, informationrepresenting at least one parameter of the first page and the accessinformation of the first page to the second communication device mayinclude sending a total number of pages, a page prefix, and at least oneof the second document type and a share mode, wherein the share modeidentifies a view only mode or a view/edit mode. The method may furthercomprise receiving, by the first communication device, an update fromthe document server between the step of sending the document to thedocument server for processing and the step of receiving the accessinformation by the first communication device from the document server,wherein the update identifies that the processing is in progress. Thenetwork accessible storage location may be the document server.Signaling between the first and second communication devices and betweenthe first communication device and the document server may be SessionInitiation Protocol signaling. The first and second communicationdevices may be peer-to-peer devices that communicate directly with eachother and the method may further comprise establishing, by the firstcommunication device, a peer-to-peer session with the secondcommunication device prior to sending the information representing atleast one parameter of the first page and the access information of thefirst page to the second communication device. The second communicationdevice may not have access to an application required for use of thefirst document type and the document may not be able to be opened on thesecond communication device, and the second document type may besupported by an application present on the second communication device.

In another embodiment, a method for sharing a document may comprisereceiving, by a first communication device, a message from a secondcommunication device indicating that a document on the secondcommunication device is to be shared with the first communicationdevice, wherein the document is a first document type and the first andsecond communication devices do not have access to an applicationrequired to display the first document type; receiving, by the firstcommunication device from the second communication device, informationcorresponding to a first page of a plurality of pages that represent thedocument, wherein each of the plurality of pages is a second documenttype that is different from the first document type, and wherein thesecond document type is supported by an application present on thesecond communication device, and wherein the information includes accessinformation representing a network address corresponding to the firstpage of the plurality of pages that identifies a location of the firstpage on a network accessible storage location; retrieving, by the firstcommunication device, the first page from the network accessible storagelocation using the network address; displaying, by the firstcommunication device, the first page on a display; receiving, by thefirst communication device from the second communication device,information corresponding to a second page of the plurality of pages;retrieving, by the first communication device, the second page from thenetwork accessible storage location; and displaying, by the firstcommunication device, the second page on the display. The informationcorresponding to the second page may include a network address of thesecond page, wherein the first communication device does not know thenetwork address of the second page until it receives the informationfrom the first communication device. The information corresponding tothe second page may include an instruction to retrieve the second page.The method may further comprise performing, by the first communicationdevice, an edit to the first page to create a modified first page; andsending, by the first communication device, the edit to the secondcommunication device. Sending the edit may include sending the modifiedfirst page. The information corresponding to the first page may includea total number of pages, a page prefix, and at least one of the seconddocument type and a share mode, wherein the share mode identifies a viewonly mode or a view/edit mode. The first and second communicationdevices may be peer-to-peer devices that communicate directly with eachother and the method may further comprise establishing, by the firstcommunication device, a peer-to-peer session with the secondcommunication device prior to receiving, by the first communicationdevice, the message from the second communication device.

In yet another embodiment, a communication device may comprise a networkinterface configured to send and receive communications via a wirelessnetwork; a controller coupled to the network interface; and a memorycoupled to the controller, the memory having a plurality of instructionsstored thereon for execution by the controller, the instructionsincluding instructions for: receiving input indicating that a documenton the first communication device is to be shared with a secondcommunication device; determining that the document is a first documenttype and that the communication device does not have access to anapplication required to open the first document type; sendinginformation representing at least one parameter to be used in processingthe document to a document server; sending the document to the documentserver for processing into a plurality of pages based on the at leastone parameter, wherein each of the plurality of pages is a seconddocument type that is different from the first document type, andwherein the second document type is supported by an application presenton the communication device; receiving access information correspondingto a first page of the plurality of pages from the document server,wherein the address information identifies a location of the first pageon a network accessible storage location; retrieving the first page fromthe network accessible storage location using the access information;sending information representing at least one parameter of the firstpage and access information for the first page to the secondcommunication device; displaying the first page on a display; receivinginput selecting a second page of the plurality of pages; sendinginformation requesting the second page to the network accessible storagelocation; retrieving the second page from the network accessible storagelocation; sending information needed to obtain the second page from thenetwork accessible storage location to the second communication device;and displaying the second page on the display. The instructions mayfurther include instructions for establishing a peer-to-peer sessionwith the second communication device prior to sending the informationrepresenting at least one parameter of the first page and accessinformation for the first page to the second communication device. Thecommunication device may communicate via the wireless network and theinstructions may further comprise instructions for establishing awireless communication link with the wireless network prior to sendingthe information representing at least one parameter to be used inprocessing the document to the document server. The communication devicemay communicate via the wireline network and the instructions mayfurther comprise instructions for establishing a wireline communicationlink with the wireline network prior to sending the informationrepresenting at least one parameter to be used in processing thedocument to the document server.

While the preceding description shows and describes one or moreembodiments, it will be understood by those skilled in the art thatvarious changes in form and detail may be made therein without departingfrom the spirit and scope of the present disclosure. For example,various steps illustrated within a particular sequence diagram or flowchart may be combined or further divided. In addition, steps describedin one diagram or flow chart may be incorporated into another diagram orflow chart. Furthermore, the described functionality may be provided byhardware and/or software, and may be distributed or combined into asingle platform. Additionally, functionality described in a particularexample may be achieved in a manner different than that illustrated, butis still encompassed within the present disclosure. Therefore, theclaims should be interpreted in a broad manner, consistent with thepresent disclosure.

What is claimed is:
 1. A method for sharing a document comprising:sending, by a first communication device, a document of a first documenttype to a document server for processing into a plurality of pages of asecond document type that is different from the first document type,wherein the first communication device does not have access to anapplication required to display the first document type but has accessto an application required to display the second document type;receiving, by the first communication device from the document server,access information corresponding to a first page of the plurality ofpages, wherein the access information identifies a location of the firstpage on a network accessible storage location; retrieving, by the firstcommunication device, the first page from the network accessible storagelocation using the access information; sending, by the firstcommunication device, the access information for the first page to thesecond communication device; and displaying, by the first communicationdevice, the first page on a display.